PostgreSQL 高可用 PGPOOL-II 源码安装与配置

1 背景知识

本文主要介绍如何在 3 节点的机器下使用源码编译的方式部署 PGPOOL-II

1.1 PGPOOL-II 集群节点规划

IP 地址 操作系统版本 角色 主机名
192.168.10.191 VIP VIP
192.168.10.192 Alma Linux 8.8 PostgreSQL Master node1
192.168.10.193 Alma Linux 8.8 PostgreSQL Standby node2
192.168.10.194 Alma Linux 8.8 PostgreSQL Standby node3

1.2 PGPOOL-II 版本和端口规划

组件 说明
Pgpool-II 版本 4.4.4 -
port 9999 pgpool-II 提供对外数据库连接。
9898 PCP 进程的连接。
9000 watchdog 接收连接的端口。
9694 watchdog 用于发送心跳信息的端口。
配置文件 /usr/local/pgpool/etc/pgpool.conf Pgpool-II 配置文件。
Pgpool-II 启动用户 postgres(pgpooll 4.1 版本之后)
Runing mode 流复制模式
Watchdog on 健康和心跳检查。

1.3 PGPOOL-II 变量和脚本规划

功能 脚本位置 说明
Failover /usr/local/pgpool/etc/failover.sh.sample failvoer_command 运行失败切换的脚本模版。
/usr/local/pgpool/etc/follow_primary.sh.sample failvoer_primarycommand 将备库指向新的主节点。
Online recovery /usr/local/pgpool/etc/recovery_1st_stage.sample recovery_1st_stage_command 当备节点失败后,自动恢复。
/usr/local/pgpool/etc/pgpool_remote_start.sample recovery_1st_stage_command 启动一个备节点。
Watchdog /usr/local/pgpool/etc/escalation.sh.sample wd_escalation_command 安全的切换主备。

2 安装 PostgreSQL 数据库

请参考 PostgreSQL16

3 搭建流复制

请参考搭建流复制

服务器已打好快照 STREAM INSTALL,从这里开始配置 PGPOOL-II 高可用组件。


4 PGPOOL-II操作系统环境

请参考 PGPOOL-II 环境需求

快照为 PGPOOL-II ENV


5 PGPOOL-II 安装

Warning

无特殊说明,以下操作需要在所有节点下执行。

5.1 下载 pgpool-II 源码

su - postgres 
cd /soft
wget https://www.pgpool.net/mediawiki/download.php?f=pgpool-II-4.4.4.tar.gz -O pgpool-II-4.4.4.tar.gz
tar -zxf *pgpool-II-*.tar.gz
cd pgpool-II-*/

5.2 解压源文件,执行 configure 脚本

./configure --prefix=/usr/local/pgsql --with-openssl --with-pam --with-memcached=memcacehd

5.3 编译 PGPOOL-II 并安装

make -j 8  && make install

5.4 安装 pgpool_recovery

1、编译与安装。

cd  /soft/pgpool-II-4.4.4/src/sql/pgpool-recovery
make && make install

2、加载插件。

Warning

只在 Master 节点执行。

psql template1
CREATE EXTENSION pgpool_recovery;
\c  postgres 
CREATE EXTENSION pgpool_recovery;
\c  testdb 
CREATE EXTENSION pgpool_recovery;

5.5 安装 pgpool-regclass

1、编译和安装。

cd /soft/pgpool-II-4.4.4/src/sql/pgpool-regclass
make && make install

2、加载插件。

Warning

只在 Master 节点执行。

psql template1
CREATE EXTENSION pgpool_regclass;
\c  postgres 
CREATE EXTENSION pgpool_regclass;
\c  testdb 
CREATE EXTENSION pgpool_regclass;

5.6 创建 insert_lock table (option)

1、若不使用 快照隔离模式本地复制模式时,可跳过此步骤。
2、若使用 快照隔离模式本地复制模式时,需要配置 insert_lock table。

Warning

只在 Master 节点执行。

cd /soft/pgpool-II-4.4.4/src/sql
psql  -Upostgres -dtemplate1
\i insert_lock.sql
\c  postgres 
\i insert_lock.sql;
\c  testdb 
\i insert_lock.sql;